#ifndef GRAPHICSOBJECT_H
#define GRAPHICSOBJECT_H

#include "../Engine_global.h"

class ESprite;
class ETexture;
class EAnimationSet;

class ENGINESHARED_EXPORT EGraphicsObject
{
    friend class EGraphicsObjectManager;
public:
    explicit EGraphicsObject();
    ~EGraphicsObject();

    boost::shared_ptr<EGraphicsObject> clone() const;

    void update(float dt);

    boost::shared_ptr<EAnimationSet> anims() const;
    boost::shared_ptr<ETexture> texture() const;
    boost::shared_ptr<ESprite> sprite() const;
private:
    boost::shared_ptr<ESprite> m_sprite;

    // Can be static texture OR animation
    boost::weak_ptr<ETexture> m_texture;
    boost::shared_ptr<EAnimationSet> m_anims;

};

#endif // GRAPHICSOBJECT_H
